package com.liam.chinesevietnamesecorpus.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.liam.chinesevietnamesecorpus.dto.CorpusLibraryDTO;
import com.liam.chinesevietnamesecorpus.dto.CorpusLibraryUpdateDTO;
import com.liam.chinesevietnamesecorpus.vo.CorpusLibraryStatisticsVO;
import com.liam.chinesevietnamesecorpus.vo.CorpusLibraryVO;

/**
 * 语料库服务接口
 * 
 * @author Liam
 */
public interface CorpusLibraryService {

    /**
     * 创建语料库
     * 
     * @param corpusLibraryDTO 语料库信息
     * @return 语料库信息
     */
    CorpusLibraryVO createCorpusLibrary(CorpusLibraryDTO corpusLibraryDTO);

    /**
     * 根据ID查询语料库信息
     * 
     * @param id 语料库ID
     * @return 语料库信息
     */
    CorpusLibraryVO getCorpusLibraryById(Long id);

    /**
     * 更新语料库信息
     * 
     * @param id 语料库ID
     * @param corpusLibraryUpdateDTO 更新信息
     * @return 更新后的语料库信息
     */
    CorpusLibraryVO updateCorpusLibrary(Long id, CorpusLibraryUpdateDTO corpusLibraryUpdateDTO);

    /**
     * 删除语料库
     * 
     * @param id 语料库ID
     */
    void deleteCorpusLibrary(Long id);

    /**
     * 分页查询语料库列表
     * 
     * @param page 页码
     * @param size 每页大小
     * @param keyword 搜索关键词
     * @param domain 领域筛选
     * @return 语料库列表
     */
    IPage<CorpusLibraryVO> getCorpusLibraryList(int page, int size, String keyword, String domain);

    /**
     * 获取语料库统计信息
     * 
     * @param id 语料库ID
     * @return 统计信息
     */
    CorpusLibraryStatisticsVO getCorpusLibraryStatistics(Long id);
}
